$(function() {
	initBlockUI();
	initDocClass();
	initDocType();
	initPrevNextButtons();
	initAddOptions();
	// show_FCKEditor("html_tpl_1", {width: 745, height: 400});
	// show_FCKEditor("form_tpl_1", {width: 745, height: 400});
	// makeFormsPreview("#{abc}<br />#{bcd}", ["abc","bcd"]);
});

/* 点击“使用 FCKEditor 设计”按钮 */
function FCKEditor_button(textarea_id, button, status_id)
{
   show_FCKEditor(textarea_id, {width:760, height:400});
   $(status_id).value = 1;
   $(button).hide();
}

/* 获取表单域字符串 */
function getFormArea(str)
{
   var reg = /#\{[0-9a-zA-Z]*[a-zA-Z][0-9a-zA-Z]*\}/ig;
   return str.match(reg);
}

/* 从表单域字符串中获取数据 */
function getFormAreaData(formArea)
{
   var a = Array();
   var reg = /[0-9a-zA-Z]+/;
   for (var i = 0; i < formArea.length; i ++)
     {
	a[a.length] = formArea[i].match(reg);
     }
   return a;
}

// 点击选择公文模板类后的动作
function afterClickDocClassIcon(block)
{
	$("#choose_tpl_class_data input:checked").removeAttr("checked");
	block.attr("checked", "checked");
	$("#tpl_class").val(block.val());
}

/* 获取公文模板类 -- jQuery */
function initDocClass()
{
	var url = "doc_template2.php";
	var pars = { page_status: 2 };
	$.post(url, pars, function(xml) {
		$("#choose_tpl_class_data").html("");
		$("item", xml).each(function(i) {
			var id = $(this).attr("id");
			var zhname = $(this).attr("zhname");
			$("<a></a>").addClass("tpls")
					.attr("href", "#")
					.append($("<div></div>").addClass("tpls_icon"))
					.append($("<input type=\"radio\" />")
							.val(id)
							.attr("name", "tpls_class")
							.click(function() {
								afterClickDocClassIcon($(this));
								return false;
							})
					)
					.append(zhname)
					.click(function() {
						afterClickDocClassIcon($("input:radio", this));
						return false;
					})
			.appendTo("#choose_tpl_class_data");
		});
		$("#choose_tpl_class_data").append($("<div></div>").addClass("divclear"));
	});
}

/* 选择公文填写方式 */
function initDocType()
{
	$(".tpl_types").click(function() {
		$(".tpl_types input:radio:checked").removeAttr("checked");
		$("input:radio", this).attr("checked", "checked");
		$("#tpl_type").val($("input:radio", this).val());
		return false;
	});
	$("input:radio[@name='tpls_type_item']").click(function() {
		$(".tpl_types input:radio:checked").removeAttr("checked");
		$(this).attr("checked", "checked");
		$("#tpl_type").val($(this).val());
		return false;
	});
}

// 初始化上下步按钮
function initPrevNextButtons()
{
	step1_next();
	step2_prev();
	step2_next();
	step31_prev();
	step31_next();
	step32_prev();
	step32_next();
	step3_prev();
	step3_next();
	step4_prev();
	step4_submit();
}

// 初始化表单填写方式第三步“为模板选择表单”中“选项”的“增加”modal
function initAddOptions()
{
	// 初始化“输入”、“预设”单选框事件
	$("input[@name='iso_type']").focus(function() {
		if ($(this).val() == 1)
		{
			$("#iso_label, #iso_value").removeAttr("disabled");
			$("#iso_selection, #iso_list").attr("disabled", "disabled");
		}
		else if ($(this).val() == 2)
		{
			$("#iso_label, #iso_value").attr("disabled", "disabled");
			$("#iso_selection, #iso_list").removeAttr("disabled");
		}
	});
	// 初始化“预设”列表以及事件
	var h = {};
	$.each(oa_predefine_data, function(i, n) {
		h[i] = n["name"];
	});
	$("#iso_selection").html(makeSelectOption(h, -1))
			.change(function() {
				var key = $(this).val();
				var name = makeSelectOption(oa_predefine_data[key].fun(), -1);
				$("#iso_list").html(name);
			});
	// 初始化“确定”按钮
	$("#iso_ok").click(function() {
		var isotype = $("input:radio[@name='iso_type']:checked").val();
		if (isotype == 1)
		{
			var newhash = {};
			if ($.trim($("#iso_label").val()) == "" || $.trim($("#iso_value").val()) == "") { alert("请输入完整数据！"); return false; }
			newhash[$("#iso_value").val()] = $("#iso_label").val();
			$("#_formoptions_select_" + $(this).attr("formid")).append(makeSelectOptionWithValue(newhash, -1));
			m(0);
		}
		else if (isotype == 2)
		{
			var newhash = {};
			// var theSelection = $("#_formoptions_select_" + $(this).attr("formid"));
			if ($.trim($("#iso_list").html()) == "") { alert("请选择预设类型！"); return false; }
			// $("#_formoptions_select_" + $(this).attr("formid")).append($("#iso_list").html());
			$("#iso_list option").each(function(i) {
				newhash[$(this).val()] = $(this).html();
			});
			$("#_formoptions_select_" + $(this).attr("formid")).append(makeSelectOptionWithValue(newhash, -1));
			m(0);
		}
	});
	// 初始化选项修改模块的“确定”按钮
	$("#imo_ok").click(function() {
		var l = $("#imo_label").val();
		var v = $("#imo_value").val();
		if ($.trim(l) == "" || $.trim(v) == "") { alert("请输入完整数据！"); return false; }
		$("#_formoptions_select_" + $(this).attr("formid"))
			.find("option:selected")
			.val(v)
			.html(v + ":" + l);
		m(0);
	});
}

/* 第一步的“下一步”按钮 */
function step1_next()
{
	$("#step1_next").click(function() {
		if ($("input:radio[@name='tpls_class']:checked").size() == 0)
		{
			window.alert("请选择公文类！");
			return false;
		}
		$("#choose_tpl_class").hide();
		$("#choose_tpl_type").show();
		return false;
	});
}

/* 第二步的“上一步”按钮 */
function step2_prev()
{
	$("#step2_prev").click(function() {
		$("#choose_tpl_type").hide();
		$("#choose_tpl_class").show();
		return false;
	});
}

/* 第二步的“下一步”按钮 */
function step2_next()
{
	$("#step2_next").click(function() {
		if ($("input:radio[@name='tpls_type_item']:checked").size() == 0)
		{
			window.alert("请选择公文填写方式！");
			return false;
		}
		$("#choose_tpl_type").hide();
		if ($("#tpl_type").val() == 1)
		{
			$("#form_in_step1").show();
			if ($("#form_in_step1 #form_tpl_1___Frame").size() == 0)
			{
				show_FCKEditor("form_tpl_1", {width: 745, height: 450});
			}
		}
		else
		{
			$("#html_in_step1").show();
			if ($("#html_in_step1 #html_tpl_1___Frame").size() == 0)
			{
				show_FCKEditor("html_tpl_1", {width: 745, height: 450});
			}
		}
		return false;
	});
}

/* 第三步（1）的“上一步”按钮 */
function step31_prev()
{
	$("#step31_prev").click(function() {
		$("#form_in_step1").hide();
		$("#choose_tpl_type").show();
		return false;
	});
}

/* 第三步（1）的“下一步”按钮 -- jQuery */
function step31_next()
{
	$("#step31_next").click(function() {
		var str = get_FCKData("form_tpl_1");
		var match_strs = getFormArea(str);
		if (match_strs == null)
		{
			alert("请按照提示输入表单域！");
			return false;
		}
		var cAS = checkArraySame(match_strs);
		if (!!cAS)
		{
			alert("一个模板不允许出现两个相同的表单域名！\n您所创建的模板中有同名的表单域 \"" + cAS + "\"！");
			return false;
		}
		var areadatas = getFormAreaData(match_strs);
		$("#form_in_blocks_ids").val(areadatas.join(","));
		makeFormsPreview(str, areadatas);
		// makeFormsBlocks();
		
		$("#form_in_step1").hide();
		$("#form_in_step2").show();
		return false;
	});
}

/* 第三步（2）的“上一步”按钮 */
function step32_prev()
{
	$("#step32_prev").click(function() {
		$("#form_in_step2").hide();
		$("#form_in_step1").show();
		return false;
	});
}

/* 第三步（2）的“下一步”按钮 */
function step32_next()
{
	$("#step32_next").click(function() {
		var ids = $("#form_in_blocks_ids").val().split(",");
		var flag = true;
		$.each(ids, function(i, n) {
			if (!checkForm(n)) { flag = false; return false; } 
		});
		if (!flag) { return false; }
		
		$("#form_in_step2").hide();
		$("#form_in_step3").show();
		return false;
	});
}

/* 检测表单是否符合条件 */
function checkForm(id)
{
	var type = $("#_formtype_" + id).val();
	switch(type) {
		case "no":
			alert("编号为 " + id + " 的表单名类型还未定义！");
			return false;
			break;
		case "l":
			if ($.trim($("#_formvalue_content_" + id).val()) == "")
			{ alert(id + " 表单域：不可编辑文本域必须提供内容！"); return false; }
			break;
		case "r": case "c": case "s":
			var s = { r: "单选框", c: "多选框", s: "下拉框" };
			if ($.trim($("#_formoptions_select_" + id).html()) == "")
			{ alert(id + " 表单域：" + s[type] + "的选项不能为空！"); return false; }
			var a = [];
			var opts = $("#_formoptions_select_" + id).find("option");
			opts.each(function(i){
				a[a.length] = $(this).val();
			});
			if (checkArraySame(a) !== false) { alert(id + " 表单域：请保证" + s[type] + "内数据的值唯一！"); return false; }
			if (opts.size() < 2) { alert(id + " 表单域：" + s[type] + "需要至少两个选项"); return false;}
			break;
	}
	return true;
}

/* 第三步的“上一步”按钮 */
function step3_prev()
{
	$("#step3_prev").click(function() {
		$("#html_in_step1").hide();
		$("#choose_tpl_type").show();
		return false;
	});
}

/* 第三步的“下一步”按钮 */
function step3_next()
{
	$("#step3_next").click(function() {
		$("#html_in_step1").hide();
		$("#form_in_step3").show();
		return false;
	});
}

/* 第四步的“上一步”按钮 */
function step4_prev()
{
	$("#step4_prev").click(function() {
		var type = $("#tpl_type").val();
		$("#form_in_step3").hide();
		if (type == 1) { $("#form_in_step2").show(); }
		else { $("#html_in_step1").show(); }
		return false;
	});
}

/* 第四步的“提交”按钮 */
function step4_submit()
{
	$("#step4_submit").click(function() {
		if (!$.trim($("#tpl_name").val())) { alert("您还未给该模板取名！"); return false; }
		var tpl_class_id = $("#tpl_class").val();
		var type = $("#tpl_type").val();
		var tpl = (type == 1) ? get_FCKData("form_tpl_1") : get_FCKData("html_tpl_1");
		var name = $("#tpl_name").val();
		var pic = $("#upload_pic_img").attr("src");
		var tpl_pars = (type == 1) ? getTplParameters() : "";
		var url = "doc_template2.php";
		var pars =
		{
			page_status:		1,
			tpl_class_id:		tpl_class_id,
			type:			type,
			tpl:				tpl,
			name:			name,
			pic:				pic,
			tpl_pars:			tpl_pars
		};
		$.post(url, pars, function(text) {
			if (/Success/.test(text)) { $("#form_in_step3").hide(); $("#aftersubmit").show(); }
		});
		return false;
	});
}

/* 获取表单参数 */
function getTplParameters()
{
	var pars = [];
	var ids = $("#form_in_blocks_ids").val().split(",");
	$.each(ids, function(i, n) {
		var name		= n;
		var type		= $("#_formtype_" + n).val();
		var width_v		= $("#_formwidth_value_" + n).val();
		var width_u		= $("input:radio[@name='_forms_width_" + n + "']:checked").val();
		var height_v		= $("#_formheight_value_" + n).val();
		var height_u		= $("input:radio[@name='_forms_height_" + n + "']:checked").val();
		var css			= {};
		if (width_v != "")	{ css["width"] = width_v + width_u; }
		if (height_v != "")	{ css["height"] = height_v + height_u; }
		var content		= $("#_formvalue_content_" + n).val();
		var options		= {};
		$("#_formoptions_select_" + n).find("option").each(function(i) {
			var v	= $(this).val();
			var l	= $(this).html().split(":")[1];
			options[v]	= l;
		});
		pars[pars.length] = {
			name:	name,
			type:	type,
			css:		css,
			content:	content,
			options:	options
		};
	});
	return JSON.stringify(pars);
}

/* 显示表单参数选择 */
function showFormParameters(id)
{
	$(".form_settings_block").hide();
	$("#_form_setting_" + id).show();
}

/* 产生表单模板预览 */
function makeFormsPreview(tpl, area)
{
	var newtpl = tpl;
	$("#form_in_blocks_data").html("");
	$.each(area, function(i, n) {
		var input_text = "<span id=\"_formbeforebuttons_" + n + "\"></span><input type=\"button\" id=\"_formbuttons_" + n + "\" class=\"formbuttons\" value=\"#{" + n + "}\" onclick=\"showFormParameters('" + n + "');\" />";
		newtpl = newtpl.replace("#{" + n + "}", input_text);
		$("#form_in_blocks_data").append(makeFormParametersTable(n));
	});
	$("#data_preview").html(newtpl);
	$("#form_in_blocks_data .form_settings_block").hide();
	$("#form_in_blocks_data .form_settings_block").eq(0).show();
}

/* 产生表单表格 */
function makeFormParametersTable(id)
{
	var block = $("<div></div>").addClass("form_settings_block").attr("id", "_form_setting_" + id)
				.append($("<table></table>").addClass("choise_table").attr("cellspacing", 0)
					.append($("<tr></tr>")
						.append($("<td></td>").attr("width", 50).html("表单名："))
						.append($("<td></td>").html($("<input type=\"text\" />")
													.addClass("disabled_text")
													.attr("id", "_formname_" + id)
													.attr("disabled", "disabled")
													.val(id)
						)))
					.append($("<tr></tr>")
						.append($("<td></td>").html("类型："))
						.append($("<td></td>").html($("<select></select>")
													.attr("id", "_formtype_" + id)
													.attr("formid", id)
													.append($("<option></option>").val("no").html("请选择表单类型..."))
													.append($("<option></option>").val("t").html("文本域"))
													.append($("<option></option>").val("l").html("不可编辑文本域"))
													.append($("<option></option>").val("a").html("多行文本域"))
													.append($("<option></option>").val("r").html("单选框"))
													.append($("<option></option>").val("c").html("多选框"))
													.append($("<option></option>").val("p").html("密码框"))
													.append($("<option></option>").val("s").html("下拉框"))
													.change(function() {
														changeFormType($(this).val(), $(this).attr("formid"));
														return false;
													})
						))
					)
				)
				.append($("<div></div>").addClass("options_div")
					.append($("<table></table>").addClass("options_table").attr("cellspacing", 0)
						.append($("<tr></tr>").attr("id", "_formwidth_" + id)
							.append($("<td></td>").attr("width", 50).html("宽度："))
							.append($("<td></td>")
									.append($("<input type=\"text\" />").addClass("forms_text").attr("id", "_formwidth_value_" + id))
									.append($("<input type=\"radio\" name=\"_forms_width_" + id + "\" checked=\"checked\" />").val("px"))
									.append("像素 ")
									.append($("<input type=\"radio\" name=\"_forms_width_" + id + "\" />").val("%"))
									.append("%")
							)
						)
						.append($("<tr></tr>").attr("id", "_formheight_" + id)
							.append($("<td></td>").html("高度："))
							.append($("<td></td>")
									.append($("<input type=\"text\" />").addClass("forms_text").attr("id", "_formheight_value_" + id))
									.append($("<input type=\"radio\" name=\"_forms_height_" + id + "\" checked=\"checked\"/>").val("px"))
									.append("像素 ")
									.append($("<input type=\"radio\" name=\"_forms_height_" + id + "\" />").val("%"))
									.append("%")
							)
						)
						.append($("<tr></tr>").attr("id", "_formvalue_" + id)
							.append($("<td></td>").html("内容："))
							.append($("<td></td>").html($("<textarea></textarea>").addClass("forms_content").attr("id", "_formvalue_content_" + id)))
						)
						.append($("<tr></tr>").attr("id", "_formoptions_" + id)
							.append($("<td></td>").html("选项："))
							.append($("<td></td>")
									.append($("<select></select>").attr("size", 5).attr("id", "_formoptions_select_" + id))
									.append("<br />")
									.append($("<input type=\"button\" />").attr("formid", id).val("增加")
										.click(function() {
											showAddOptionsModal($(this).attr("formid"));
											return false;
										})
									)
									.append($("<input type=\"button\" />").attr("formid", id).val("修改")
										.click(function() {
											modifyFormOptions($(this).attr("formid"));
											return false;
										})
									)
									.append("<br />")
									.append($("<input type=\"button\" />").attr("formid", id).val("删除")
										.click(function() {
											deleteFormOptions($(this).attr("formid"));
											return false;
										})
									)
									.append($("<input type=\"button\" />").attr("formid", id).val("清空")
										.click(function() {
											clearFormOptions($(this).attr("formid"));
											return false;
										})
									)
							)
						)
						.append($("<tr></tr>")
							.append($("<td></td>").attr("colspan", 2)
									.append($("<input type=\"button\" />")
											.val("预览")
											.attr("formid", id)
											.click(function() {
												previewTheForms($(this).attr("formid"));
												return false;
											})
									)
							)
						)
					)
				);
	return block;
}

/* 更改表单类型 */
function changeFormType(type, id)
{
	var typetable = $("#_form_setting_" + id + " .options_div");
	var trWidth = $("#_form_setting_" + id + " #_formwidth_" + id);
	var trHeight = $("#_form_setting_" + id + " #_formheight_" + id);
	var trValue = $("#_form_setting_" + id + " #_formvalue_" + id);
	var trOptions = $("#_form_setting_" + id + " #_formoptions_" + id);
	switch(type)
	{
		case "t":
			trWidth.show();
			trHeight.hide();
			trValue.show();
			trOptions.hide();
			break;
		case "l":
			trWidth.show();
			trHeight.hide();
			trValue.show();
			trOptions.hide();
			break;
		case "a":
			trWidth.show();
			trHeight.show();
			trValue.show();
			trOptions.hide();
			break;
		case "r":
			trWidth.hide();
			trHeight.hide();
			trValue.hide();
			trOptions.show();
			break;
		case "c":
			trWidth.hide();
			trHeight.hide();
			trValue.hide();
			trOptions.show();
			break;
		case "p":
			trWidth.show();
			trHeight.hide();
			trValue.show();
			trOptions.hide();
			break;
		case "s":
			trWidth.show();
			trHeight.show();
			trValue.hide();
			trOptions.show();
			break;
	}
	typetable.show();
	if (type == "no") { typetable.hide(); $("#_formbeforebuttons_" + id).html(""); }
}

/* 预览表单效果 */
function previewTheForms(id)
{
	var pb = $("#_formbeforebuttons_" + id);
	var type = $("#_formtype_" + id).val();
	
	var width_value = $("#_formwidth_value_" + id).val();
	var width_unit = $("input:radio[@name='_forms_width_" + id + "']:checked").val(); 
	var height_value = $("#_formheight_value_" + id).val();
	var height_unit = $("input:radio[@name='_forms_height_" + id + "']:checked").val();
	var content = $("#_formvalue_content_" + id).val();
	var options = $("#_formoptions_select_" + id).html();
	
	var css = {};
	if (/^\d+$/.test(width_value)) { css["width"] = width_value + width_unit; }
	if (/^\d+$/.test(height_value)) { css["height"] = height_value + height_unit; }
	
	var ha = {};
	ha["content"] = content;
	ha["options"] = {};
	if ($.trim(options) != "")
	{
		$("#_formoptions_select_" + id + " option").each(function(i) {
			ha["options"][$(this).val()] = $(this).html().split(":")[1];
		});
	}
	
	// $("#_formbeforebuttons_" + id).html(getTplInput2(id, "s", {}, {options: { 1: "男", 0: "女" }}));
	pb.html(getTplInput2(id, type, css, ha));
}

/* 点击选项列表的“添加” */
function showAddOptionsModal(id)
{
	$("#iso_ok").attr("formid", id);
	$("#input_select_options").modal({
		onShow: function() { m(1); },
		onClose: function() { m(0); }
	});
}

/* 点击选项列表的“修改” */
function modifyFormOptions(id)
{
	var a = $("#_formoptions_select_" + id).find("option:selected");
	if (a.size() == 0) { alert("请选择一条待修改选项！"); return false; }
	var v = a.val();
	var l = a.html().split(":")[1];
	$("#imo_label").val(l);
	$("#imo_value").val(v);
	$("#imo_ok").attr("formid", id);
	$("#input_modify_options").modal({
		onShow: function() { m(1); },
		onClose: function() { m(0); }
	});
}

/* 点击选项列表的“删除” */
function deleteFormOptions(id)
{
	var obj = $("#_formoptions_select_" + id).find("option:selected");
	if (obj.size() == 0) { alert("请选择一条待删除选项！"); return false; }
	if (confirm("真的要删除 " + obj.html() + " ？")) { obj.remove(); }
}

/* 点击选项列表的“清空” */
function clearFormOptions(id)
{
	var obj = $("#_formoptions_select_" + id);
	if (confirm("确实清空整个选项列表？")) { obj.html(""); }
}


/* 表单参数选项切换 */
function chFormType(id)
{
   var sv = $F("form_type_" + id);
   var size_str = ["<input type=\"text\" size=\"8\" id=\"form_size_" + id + "\" name=\"form_size_" + id + "\" />",
				   "<input type=\"text\" size=\"6\" id=\"form_sizeX_" + id + "\" name=\"form_sizeX_" + id + "\" />",
				   "<input type=\"text\" size=\"6\" id=\"form_sizeY_" + id + "\" name=\"form_sizeY_" + id + "\" />"];
   var size_alert_str = ["<br /><span style=\"color:red;\">输入整数值或百分比，<br />示例：\"20\"，\"50%\"</span>",
						 "<br /><span style=\"color:red;\">输入两个值，取值为整数值或百分比，<br />示例：\"80%\"x\"20\"</span>"];
   var option_str = "<input type=\"text\" id=\"form_option_" + id + "\" name=\"form_option_" + id + "\" />";
   var option_alert_str = ["<br /><span style=\"color:red;\">输入字符串，<br />示例：\"这是字符串\"</span>",
						   "<br /><span style=\"color:red;\">按照一定格式输入，<br />示例：\"男|女|保密\"</span>"];
   var strings = [size_str[0] + size_alert_str[0],
				  option_str + option_alert_str[0],
				  size_str[1] + " x " + size_str[2] + size_alert_str[1],
				  option_str + option_alert_str[1]];
   switch (sv)
     {
      case "t":
		$("fs_" + id).update(strings[0]);
		$("fo_" + id).update(strings[1]);
		break;
      case "l":
		$("fs_" + id).update(strings[0]);
		$("fo_" + id).update(strings[1]);
		break;
      case "a":
		$("fs_" + id).update(strings[2]);
		$("fo_" + id).update(strings[1]);
		break;
      case "r":
		$("fs_" + id).update(strings[2]);
		$("fo_" + id).update(strings[3]);
		break;
      case "c":
		$("fs_" + id).update(strings[2]);
		$("fo_" + id).update(strings[3]);
		break;
      case "p":
		$("fs_" + id).update(strings[0]);
		$("fo_" + id).update(strings[1]);
		break;
      case "s":
		$("fs_" + id).update(strings[0]);
		$("fo_" + id).update(strings[3]);
		break;
      default:
		$("fs_" + id).update("");
		$("fo_" + id).update("");
		break;
     }
}

/* 上传成功 */
function upload_pic_succ(img)
{
   $("#upload_pic_iframe").hide();
   $("#upload_pic_img").attr("src", img);
   $("#upload_pic").show();
}

// 控制 modal 的隐现
function m(f) { modalShowClose(".editor_preview_block input, .editor_preview_block select, .editor_preview_block textarea", f); }